package com.factory.demo2.abs;

/**
 * 创建者类，这是抽象创建者类，定义了一个抽象的工厂方法，让子类实现此方法制造产品，它通常会包含依赖于抽象产品的代码，而这些抽象产品由子类制造
 * 
 * @author dell
 * 
 */
public abstract class PizzaStore {

	// 抽象的工厂方法
	// 必须返回一个产品，超类中定义的方法通常用到工厂方法的返回值
	// 可能需要参数来指定所要的产品
	abstract Pizza createPizza(String item);

	public Pizza orderPizza(String type) {
		Pizza pizza = createPizza(type);
		System.out.println("--- Making a " + pizza.getName() + " ---");
		pizza.prepare();
		pizza.bake();
		pizza.cut();
		pizza.box();
		return pizza;
	}

}
